// DAO/Impl/LessonDaoImpl.java
package com.hp.DAO.Impl;                         // 实现包

import com.hp.DAO.BaseDao;                       // 基类
import com.hp.DAO.LessonDao;                     // 接口：LessonDao
import com.hp.Model.Lesson;                      // 实体：课时
import com.hp.Util.RowMapper;                    // 行映射器
import com.hp.Util.SimpleJdbcTemplate;           // JDBC 模板

import java.util.List;                    // List

/** LessonDao 的 JDBC 实现（课时通常不带时间字段） */
public class LessonDaoImpl extends BaseDao implements LessonDao {
    public LessonDaoImpl(SimpleJdbcTemplate jdbc) { super(jdbc); } // 构造注入

    // RowMapper：ResultSet -> Lesson
    private static final RowMapper<Lesson> M = rs -> {
        Lesson l = new Lesson();                                   // 新建实体
        l.setId(rs.getLong("id"));                                  // id
        l.setSectionId(rs.getLong("section_id"));                   // 所属章节
        l.setTitle(rs.getString("title"));                          // 标题
        l.setOrderNo(rs.getInt("order_no"));                        // 序号
        l.setVideoUrl(rs.getString("video_url"));                   // 视频地址
        return l;                                                   // 返回
    };

    @Override
    public Lesson findById(Long id) {                               // 按主键查询
        String sql = "SELECT id,section_id,title,order_no,video_url FROM lesson WHERE id=?"; // SQL
        return queryOne(sql, M, id);                                 // 执行
    }

    @Override
    public List<Lesson> listBySection(Long sectionId) {              // 按章节列出
        String sql = "SELECT id,section_id,title,order_no,video_url FROM lesson WHERE section_id=? ORDER BY order_no ASC"; // SQL
        return queryList(sql, M, sectionId);                         // 执行
    }

    @Override
    public Long insert(Lesson l) {                                   // 新增课时
        String sql = "INSERT INTO lesson (section_id,title,order_no,video_url) VALUES (?,?,?,?)"; // SQL
        return execInsertReturnId(sql, l.getSectionId(), l.getTitle(), l.getOrderNo(), l.getVideoUrl()); // 执行
    }

    @Override
    public int updateBasic(Lesson l) {                               // 更新基础字段
        String sql = "UPDATE lesson SET title=?, order_no=?, video_url=? WHERE id=?"; // SQL
        return execUpdate(sql, l.getTitle(), l.getOrderNo(), l.getVideoUrl(), l.getId()); // 执行
    }

    @Override
    public int deleteById(Long id) {                                 // 删除
        String sql = "DELETE FROM lesson WHERE id=?";                // SQL
        return execUpdate(sql, id);                                  // 执行
    }
}
